/*
 * investigacion.java
 *
 * Created on 14/04/2014, 12:42:44 PM
 * Copyright RVGRFD85
 */
package visit;

import com.icesoft.faces.component.dragdrop.DragEvent;
import com.icesoft.faces.component.jsfcl.data.DefaultTableDataModel;
import com.icesoft.faces.component.jsfcl.data.PopupBean;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import javax.faces.FacesException;

import com.icesoft.faces.component.jsfcl.data.DefaultSelectedData;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import com.icesoft.faces.component.jsfcl.data.PositionedPanelBean;
import com.icesoft.faces.context.effects.JavascriptContext;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import listas.listaInvestigacion;
import pojos.CatVisitadores;
import listas.parametros;
import pojos.CatLugares;
import pojos.InvInfractores;
import pojos.Investigacion;
import pojos.InvQuejosos;


/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 */
public class investigacion extends AbstractPageBean {
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
    private int __placeholder;

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    private DefaultTableDataModel dataTable1Model = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model() {
        return dataTable1Model;
    }

    public void setDataTable1Model(DefaultTableDataModel dtdm) {
        this.dataTable1Model = dtdm;
    }
    private PopupBean panelPopup1Bean = new PopupBean();

    public PopupBean getPanelPopup1Bean() {
        return panelPopup1Bean;
    }

    public void setPanelPopup1Bean(PopupBean pb) {
        this.panelPopup1Bean = pb;
    }
    //selector1******
    private DefaultSelectedData selectOneMenu1Bean = new DefaultSelectedData();

    public DefaultSelectedData getSelectOneMenu1Bean() {
        return selectOneMenu1Bean;
    }

    public void setSelectOneMenu1Bean(DefaultSelectedData dsd) {
        this.selectOneMenu1Bean = dsd;
    }

    private DefaultSelectionItems selectOneMenu1DefaultItems = new DefaultSelectionItems();

    public DefaultSelectionItems getSelectOneMenu1DefaultItems() {
        return selectOneMenu1DefaultItems;
    }

    public void setSelectOneMenu1DefaultItems(DefaultSelectionItems dsi) {
        this.selectOneMenu1DefaultItems = dsi;
    }

    ///selector1********
    private DefaultSelectedData selectOneMenu2Bean = new DefaultSelectedData();


    public DefaultSelectedData getSelectOneMenu2Bean() {
        return selectOneMenu2Bean;
    }

    public void setSelectOneMenu2Bean(DefaultSelectedData dsd) {
        this.selectOneMenu2Bean = dsd;
    }

    private DefaultSelectionItems selectOneMenu2DefaultItems = new DefaultSelectionItems();



    public DefaultSelectionItems getSelectOneMenu2DefaultItems() {
        return selectOneMenu2DefaultItems;
    }

    public void setSelectOneMenu2DefaultItems(DefaultSelectionItems dsi) {
        this.selectOneMenu2DefaultItems = dsi;
    }
    private DefaultTableDataModel dataTable2Model = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable2Model() {
        return dataTable2Model;
    }

    public void setDataTable2Model(DefaultTableDataModel dtdm) {
        this.dataTable2Model = dtdm;
    }
    private DefaultTableDataModel dataTable2Model1 = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable2Model1() {
        return dataTable2Model1;
    }

    public void setDataTable2Model1(DefaultTableDataModel dtdm) {
        this.dataTable2Model1 = dtdm;
    }
    private DefaultTableDataModel dataTable2Model2 = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable2Model2() {
        return dataTable2Model2;
    }

    public void setDataTable2Model2(DefaultTableDataModel dtdm) {
        this.dataTable2Model2 = dtdm;
    }
    private PopupBean panelPopup2Bean = new PopupBean();

    public PopupBean getPanelPopup2Bean() {
        return panelPopup2Bean;
    }

    public void setPanelPopup2Bean(PopupBean pb) {
        this.panelPopup2Bean = pb;
    }

    private PopupBean panelPopup3Bean = new PopupBean();

    public PopupBean getPanelPopup3Bean() {
        return panelPopup3Bean;
    }

    public void setPanelPopup3Bean(PopupBean pb) {
        this.panelPopup3Bean = pb;
    }

    // </editor-fold>

    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public investigacion() {
    }

    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here
            
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("investigacion Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e: new FacesException(e);
        }
        
        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here
        Calendar c = Calendar.getInstance();
        String dia = Integer.toString(c.get(Calendar.DATE));
        String mes = Integer.toString(c.get(Calendar.MONTH)+1);
        String annio = Integer.toString(c.get(Calendar.YEAR));
        this.setTituloFecha("Datos generales -- " + dia+"/"+mes+"/"+annio);
        selectOneMenu1DefaultItems.clear();
        selectOneMenu1DefaultItems.add(new SelectItem(0, ""));
        selectOneMenu2DefaultItems.clear();
        selectOneMenu2DefaultItems.add(new SelectItem(0, ""));
//        this.getSessionBean1().setVentanaAlert(false);
//        this.getSessionBean1().setVentanaError(false);
        cargarVisitador();
        cargarLugar();
        cargarListaInves();
        //cargarListaInvestigacion();
//        cargarListaInvQuejosos();
//        cargarListaInvInfractores();

        FacesContext context = FacesContext.getCurrentInstance();
        Map<String, String> paramMap = context.getExternalContext().getRequestParameterMap();
            
          if(paramMap.get("idOficio") != null){
            int invest = this.getSessionBean1().buscarOficioenInvestigacion(Integer.parseInt(paramMap.get("idOficio")));
             //this.getSessionBean1().mostrarMensajeAlert("Error",invest+" Inves");


            if(invest>0){
                this.getSessionBean1().sesion.flush();
                this.getSessionBean1().sesion.clear();
                this.getSessionBean1().sesion.load(ofiDetail, invest);

                //this.getSessionBean1().sesion.load(ofiDetail, this.listaPrinInvestigacionFiltro.get(invest).getId());
               // this.setListaPrinInvestigacionFiltro(this.listaPrinInvestigacionFiltro);


                this.infractoresTmp.clear();
                this.quejososTmp.clear();
                try {
                    Set invi;
                    invi= ofiDetail.getInvInfractoreses();
                    for (Iterator iterator =  invi.iterator(); iterator.hasNext();){
                        InvInfractores inf = (InvInfractores) iterator.next();
                        if(!inf.getDeleted()){
                            this.infractoresTmp.add(inf);
                        }
                    }
                    Set invq;
                    invq= ofiDetail.getInvQuejososes();
                    for (Iterator iterator =  invq.iterator(); iterator.hasNext();){
                        InvQuejosos quej = (InvQuejosos) iterator.next();
                        if(!quej.getDeleted()){
                            this.quejososTmp.add(quej);
                        }
                    }
                }catch (Exception e){
                    this.getSessionBean1().mostrarMensajeError("Error", e.getMessage().toString());
                }
                this.setVentanaDetail(true);
            }else{
                this.getUnaInves().setOrigen(paramMap.get("of"));
                this.getUnaInves().setId_oficio(Integer.parseInt(paramMap.get("idOficio")));
                this.setVentanaNuevo(true);
            }
        }
//        
            if(paramMap.get("idInvestigacion") != null){
            //this.getSessionBean1().mostrarMensajeAlert("id", "--> "+ Integer.parseInt(paramMap.get("idInvestigacion")) );
              this.getSessionBean1().crearSesion();
              this.getSessionBean1().sesion.flush();
              this.getSessionBean1().sesion.clear();
              this.getSessionBean1().sesion.load(unaInves,Integer.parseInt(paramMap.get("idInvestigacion")));
              this.setQuejososTmp(unaInves.getInvQuejosos());
              this.setInfractoresTmp(unaInves.getInvInfractores());
              this.setOfiDetail(unaInves);
//            //this.setRemitetnteDetail(unaInves.getRem1());
//            //this.setCargoDetail(unaInves.getCargo1());
              this.setVentanaDetail(true);
        }else{

        }


    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
    }

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    public Integer idOficio=0;
    public Integer getIdOficio() {
        return idOficio;
    }
    public void setIdOficio(Integer idOficio) {
        this.idOficio = idOficio;
    }


    /******************************FUNCIONES ESPECIFICAS GLOBALES********/
    private int RegresaSeleccionadoTablaPrincipal(FacesContext contexto, ActionEvent ae) {
        int numero=-1;
        String[] temp;
        try{
            String clientId=ae.getComponent().getClientId(contexto);
            //this.setMsg("fila -->"+ clientId.toString());
            this.getSessionBean1().mostrarMensajeError("Fila ",  clientId.toString());
            temp=clientId.toString().split(":");
            //"form1:datatable2:0:comandlink1"
            numero=Integer.parseInt(temp[2]);
        }catch(Exception e){
            this.getSessionBean1().mostrarMensajeError("Error ",  e.toString());
        }
        return numero;
    }
    /******************************FUNCIONES ESPECIFICAS GLOBALES********/

    public void cargarVisitador(){
                this.getSelectOneMenu1DefaultItems().clear();
                List <CatVisitadores> catalogo=new ArrayList<CatVisitadores>();
                try{
                    catalogo=this.getSessionBean1().getCatalogoDeVisitadores();
                    if(catalogo.size()>0){
                        Iterator iterador=catalogo.iterator();
                        if(catalogo.iterator().hasNext()){
                            CatVisitadores as;
                            while(iterador.hasNext()){
                                as=(CatVisitadores)iterador.next();
                                this.getSelectOneMenu1DefaultItems().add(new SelectItem(as.getId(),as.getVisitador()));
                            }
                        }
                    }
                }catch(Exception e){
                    this.getSessionBean1().mostrarMensajeError("Error ",  e.toString());
                }
    }

    public void cargarLugar(){
                this.getSelectOneMenu2DefaultItems().clear();
                List <CatLugares> catalogo=new ArrayList<CatLugares>();
                try{
                    catalogo=this.getSessionBean1().getCatalogoDeLugares();
                    if(catalogo.size()>0){
                        Iterator iterador=catalogo.iterator();
                        if(catalogo.iterator().hasNext()){
                            CatLugares as;
                            while(iterador.hasNext()){
                                as=(CatLugares)iterador.next();
                                this.getSelectOneMenu2DefaultItems().add(new SelectItem(as.getId(),as.getLugar()));
                            }
                        }
                    }
                }catch(Exception e){
                    this.getSessionBean1().mostrarMensajeError("Error ",  e.toString());
                }
    }

    //***
    private InvQuejosos invQuejoso = new InvQuejosos();
    private InvInfractores invInfractor = new InvInfractores();
    //**

    //** get/set InvQuejosos
    public InvQuejosos getInvQuejosos(){
        return invQuejoso;
    }
    public void setInvQuejosos(InvQuejosos invquejoso){
        this.invQuejoso = invquejoso;
    }
    //**

    //** get/set InvInfractores
    public InvInfractores getInvInfractores(){
        return invInfractor;
    }
    public void setInvInfractores(InvInfractores invinfractor){
        this.invInfractor = invinfractor;
    }
    //**

    private List<InvQuejosos> quejososTmp = new ArrayList<InvQuejosos>();
    private List<InvInfractores> infractoresTmp = new ArrayList<InvInfractores>();

    //** get/set QuejosoTmp
    public List<InvQuejosos> getQuejososTmp() {
        return quejososTmp;
    }
    public void setQuejososTmp(List<InvQuejosos> quejososTmp) {
        this.quejososTmp = quejososTmp;
    }
    //**

    //** get/set InfractoresTmp
    public List<InvInfractores> getInfractoresTmp() {
        return infractoresTmp;
    }
    public void setInfractoresTmp(List<InvInfractores> infractoresTmp) {
        this.infractoresTmp = infractoresTmp;
    }
    //**

   

private Investigacion unaInves= new Investigacion();
    private int lugarInt=0;
    private int visitadorInt=0;
    public String TituloFecha;
    private TimeZone timeZone;
    private boolean ventanaNuevo= false;
    private boolean ventanaEdit= false;
    private boolean ventanaDetail= false;
    public Investigacion getUnaInves() {
        return unaInves;
    }
    public void setUnaInves(Investigacion unaInves) {
        this.unaInves = unaInves;
    }

    public int getVisitadorInt() {
        return visitadorInt;
    }
    public void setVisitadorInt(int visitadorInt) {
        this.visitadorInt = visitadorInt;
    }

    public int getLugarInt() {
        return lugarInt;
    }
    public void setLugarInt(int lugarInt) {
        this.lugarInt = lugarInt;
    }

    public String getTituloFecha() {
        return TituloFecha;
    }
    public void setTituloFecha(String TituloFecha) {
        this.TituloFecha = TituloFecha;
    }

    public TimeZone getTimeZone() {
        this.timeZone = TimeZone.getDefault();
        return timeZone;
    }
    public void setTimeZone(TimeZone timeZone) {
        this.timeZone = timeZone;
    }

    public boolean isVentanaNuevo() {
        return ventanaNuevo;
    }
    public void setVentanaNuevo(boolean ventanaNuevo) {
        this.ventanaNuevo = ventanaNuevo;
    }
    public boolean isVentanaDetail() {
        return ventanaDetail;
    }
    public void setVentanaDetail(boolean ventanaDetail) {
        this.ventanaDetail = ventanaDetail;
    }
    public boolean isVentanaEdit() {
        return ventanaEdit;
    }

    public void setVentanaEdit(boolean ventanaEdit) {
        this.ventanaEdit = ventanaEdit;
    }

    

    public String button5_action() {

        if(this.getUnaInves().getOficio().equalsIgnoreCase("")){
            this.getSessionBean1().mostrarMensajeAlert("Atención","No. Investigación Necesario");
         return null;
        }
//        if(this.getUnaInves().getOrigen().equalsIgnoreCase("")){
//            this.getSessionBean1().mostrarMensajeAlert("Atención","Origen Necesario");
//         return null;
//        }
        try{    
        int response=getSessionBean1().addInvestigacion(this.getUnaInves(), this.getVisitadorInt(),this.getLugarInt());
            if(response == -1){
                this.getSessionBean1().mostrarMensajeAlert("Atención", "Complete la información");
            }else{
                this.getUnaInves().setId(response);
                for (int i = 0; i < quejososTmp.size() ; i++) {
                    this.setInvQuejosos(this.quejososTmp.get(i));
                    this.getInvQuejosos().setInvestigacion(this.getUnaInves());
                    InvQuejosos invQ = this.getSessionBean1().addInvQuejosos(this.getInvQuejosos());
                }
                 for (int j = 0; j < infractoresTmp.size() ; j++) {
                    this.setInvInfractores(this.infractoresTmp.get(j));
                    this.getInvInfractores().setInvestigacion(this.getUnaInves());
                    InvInfractores invI = this.getSessionBean1().addInvInfractores(this.getInvInfractores());
                }

                this.getSessionBean1().mostrarMensajeAlert("Exito","Registro almacenado con exito");                
                  }
//                cargarListaInves();
//                cargarListaInvestigacionFiltro();
                this.setVentanaNuevo(false);
        }catch(Exception e ){
            this.getSessionBean1().mostrarMensajeError("Error","Ha ocurrido un problema al intentar guardar la información " + e);
        }
             JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "document.getElementById('form2:button10').focus();");
        return null;
    }

//     

//botón 6 de correspondencia
    public String button1_invNueva() {

        this.setVentanaNuevo(true);
        Date now = new Date();
        unaInves.setFechaRec(now);
       this.getQuejososTmp().clear();
        this.getInfractoresTmp().clear();
        this.getUnaInves().setOficio("");
        this.getUnaInves().setOrigen("");
        this.getUnaInves().setObservaciones("");
        this.getUnaInves().setIregularidadObs("");
        this.getInvQuejosos().setNombre("");
        this.getInvQuejosos().setPaterno("");
        this.getInvQuejosos().setMaterno("");
        this.getInvQuejosos().setCargo("");
        this.getInvInfractores().setNombre("");
        this.getInvInfractores().setPaterno("");
        this.getInvInfractores().setMaterno("");
        this.getInvInfractores().setCargo("");
        return null;


    }
    
    public String button7_action() {
        //return null means stay on the same page
        this.quejososTmp.clear();
        this.infractoresTmp.clear();
        this.setVentanaNuevo(false);

        //cargarListaInvestigacionFiltro();
        return null;
    }

    public String button_9_action() {
        this.setVentanaNuevo(false);
        return null;
    }




 public String button_2_action() {
        //return null means stay on the same page
        this.setVentanaEdit(false);
        return null;
    }
 public String button11_action() {
        //return null means stay on the same page
        this.setVentanaEdit(false);
        return null;
    }


     public String btnclose1_action() {
        this.getSessionBean1().setVentanaAlert(false);
        return null;
    }

    public String button10_action() {
        this.getSessionBean1().setVentanaAlert(false);
        return null;
    }


    

//commandLink5_processAction ---> commandLink3_processAction
//    public void editarInves(ActionEvent ae) {
//
//        this.infractoresTmp.clear();
//        this.quejososTmp.clear();
//        FacesContext contexto = FacesContext .getCurrentInstance();
//        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
//
//        this.setUnaInves(this.listaInves.get(numero));
//        //this.getSessionBean1().mostrarMensajeAlert("Numero"," :"+ this.listaInvQuejosos.get(numero).getInvestigacion().getOficio());
//       // this.setTurnadosTmp(this.listaTurnados.get(numero).getOficios().getTurnados());
//          this.setQuejososTmp(this.listaInvQuejosos.get(numero).getInvestigacion().getInvQuejosos());
//          this.setInfractoresTmp(this.listaInvInfractores.get(numero).getInvestigacion().getInvInfractores());
//       // this.setUnOficio(this.listaTurnados.get(numero).getOficios());
//          //List <InvQuejosos> catalogo=new ArrayList<InvQuejosos>();
//
//        //try{
//            //catalogo=this.getSessionBean1().llenarInvQuejosos();
////            if(catalogo.size()>0){
////            Iterator iterador=catalogo.iterator();
////                if(catalogo.iterator().hasNext()){
////                        InvQuejosos as;
////                            while(iterador.hasNext()){
////                                as=(InvQuejosos)iterador.next();
////
////                                   if(!)
////                                this.setQuejososTmp(this.listaInves.get(numero).getInvQuejosos());


////                            }
////
////                }
////            }
//            //this.setQuejososTmp(this.listaInves.get(numero).getInvQuejosos());
////            Iterator iterador=this.listaInves.get(numero).getInvQuejosos().iterator();
////            if(catalogo.iterator().hasNext()){
////            InvQuejosos as;
////                while(iterador.hasNext()){
////                    as=(InvQuejosos)iterador.next();
////                    if(!as.getDeleted())
////                    this.quejososTmp.add(as);
////                }
////            }
//
//
//            //this.getRemitente().setId(this.listaTurnados.get(numero).getOficios().getId1());
//            this.getInvQuejosos().setId(this.listaInvQuejosos.get(numero).getInvestigacion().getIdQ());
//            this.getInvInfractores().setId(this.listaInvQuejosos.get(numero).getInvestigacion().getIdI());
//            //this.getRemitente().setNombre(this.listaTurnados.get(numero).getOficios().getRem1());
////            this.getInvQuejosos().setNombre(this.listaInvQuejosos.get(numero).getInvestigacion().getQueN());
////            this.getInvQuejosos().setPaterno(this.listaInvQuejosos.get(numero).getInvestigacion().getQueP());
////            this.getInvQuejosos().setMaterno(this.listaInvQuejosos.get(numero).getInvestigacion().getQueM());
//
////             this.getInvInfractores().setNombre(this.listaInvQuejosos.get(numero).getInvestigacion().getInfN());
////             this.getInvInfractores().setPaterno(this.listaInvQuejosos.get(numero).getInvestigacion().getInfP());
////             this.getInvInfractores().setMaterno(this.listaInvQuejosos.get(numero).getInvestigacion().getInfM());
//
//            //this.getRemitente().setCargo(this.listaTurnados.get(numero).getOficios().getCargo1());
//            //this.getInvQuejosos().setCargo(this.listaInvQuejosos.get(numero).getInvestigacion().getCargoQ());
//            //this.getInvInfractores().setCargo(this.listaInvQuejosos.get(numero).getInvestigacion().getCargoI());
//        //}catch (Exception e){
//           // this.getSessionBean1().mostrarMensajeAlert("Error",e.getMessage().toString() + " - " + e.getCause().toString());
//       // }
//        this.setLugarInt(this.listaInves.get(numero).getCatLugares().getId());
//        this.setVisitadorInt(this.listaInves.get(numero).getCatVisitadores().getId());
//        this.setVentanaEdit(true);
////        this.getSessionBean1().mostrarMensajeAlert("MSG",this.listaTurnados.get(numero).getOficios().getRem1());
////        this.setRemitente(this.listaTurnados.get(numero).getOficios().getRemitente());
////        this.setOfiDetail(this.listaTurnados.get(numero).getOficios());
////        this.setRemitetnteDetail(this.listaTurnados.get(numero).getOficios().getRem1());
////        this.setCargoDetail(this.listaTurnados.get(numero).getOficios().getCargo1());
////        this.setVentanaDetail(true);
//    }

     private int editandoO=-1;
    public int getEditandoO() {
        return editandoO;
    }

    public void setEditandoO(int editandoO) {
        this.editandoO = editandoO;
    }

    public void editarInves(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.setEditandoO(numero);
        //Procedimientos p1= new Procedimientos();
        this.getSessionBean1().sesion.clear();
        this.getSessionBean1().sesion.load(unaInves, this.listaPrinInvestigacionFiltro.get(numero).getId());
   
       // this.setUnProced(p1);
        //this.setUnProced();
        this.infractoresTmp.clear();
        this.quejososTmp.clear();

        //this.getSessionBean1().mostrarMensajeAlert("comando editar", "id"+ this.listaPrinPreocedimientosFiltro.get(numero).getId());
        try {
            Set invq;
            invq= unaInves.getInvQuejososes();
            for (Iterator iterator =  invq.iterator(); iterator.hasNext();){
                InvQuejosos quej = (InvQuejosos) iterator.next();
                if(!quej.getDeleted()){
                    this.quejososTmp.add(quej);
                }
            }
            
            Set invi;
            invi= unaInves.getInvInfractoreses();
            for (Iterator iterator =  invi.iterator(); iterator.hasNext();){
                InvInfractores inf = (InvInfractores) iterator.next();
                if(!inf.getDeleted()){
                    this.infractoresTmp.add(inf);
                }
            }

            this.getInvQuejosos().setNombre("");
            this.getInvQuejosos().setPaterno("");
            this.getInvQuejosos().setMaterno("");
            this.getInvQuejosos().setCargo("");
            this.getInvInfractores().setNombre("");
            this.getInvInfractores().setPaterno("");
            this.getInvInfractores().setMaterno("");
            this.getInvInfractores().setCargo("");
        }catch (Exception e){
            this.getSessionBean1().mostrarMensajeError("Error", e.getMessage().toString());
        }
        this.setVentanaEdit(true);
        this.setEditandoO(-1);
    }

    //** boton agreqar uno o más quejosos

    

    public String button20_action(){
//        boolean bandera=true;
//           String nombreTMP = this.invQuejoso.getNombre();
//           String paternoTMP = this.invQuejoso.getPaterno();
//           String maternoTMP = this.invQuejoso.getMaterno();

//            for (int i = 0; i < quejososTmp.size() ; i++) {
//                   if(this.quejososTmp.get(i).getNombre().equals(nombreTMP) && this.quejososTmp.get(i).getPaterno().equals(paternoTMP) && this.quejososTmp.get(i).getMaterno().equals(maternoTMP)) {
//                        this.getSessionBean1().mostrarMensajeAlert("Error", nombreTMP + " " + paternoTMP + " " + maternoTMP + " ya existe en la lista");
//                        this.invQuejoso.setNombre("");
//                        this.invQuejoso.setPaterno("");
//                        this.invQuejoso.setMaterno("");
//                        this.invQuejoso.setCargo("");
//                      bandera = false;
//                   }
//                }
        try{
//              if(bandera){
//            this.setEditandoO(-1);
            this.setQuejososTmp(quejososTmp);
            quejososTmp.add(new InvQuejosos(this.getInvQuejosos()));
             
            if(this.getEditandoO()>=0){
                this.quejososTmp.remove(this.getEditandoO());
                this.setEditandoO(-1);
            }
            this.invQuejoso.setNombre("");
            this.invQuejoso.setPaterno("");
            this.invQuejoso.setMaterno("");
            this.invQuejoso.setCargo("");
//              }
        }catch(Exception e){
        this.getSessionBean1().mostrarMensajeAlert("Error", "Ha ocurrido un porblema para agregar la informació" + e.toString());
        }

        return null;
    }
    
    public String button80_action(){
        try{
            quejososTmp.add(new InvQuejosos(this.getInvQuejosos()));
            if(this.getEditandoO()>=0){
                this.quejososTmp.remove(this.getEditandoO());
                this.setEditandoO(-1);
            }
            this.invQuejoso.setNombre("");
            this.invQuejoso.setPaterno("");
            this.invQuejoso.setMaterno("");
            this.invQuejoso.setCargo("");
        }catch(Exception e){
            this.getSessionBean1().mostrarMensajeAlert("Error", "Ha ocurrido un porblema para agregar la informació" + e.toString());
        }
        return null;
    }
    

     //** boton agregar infractores
    public String button30_action(){

//           boolean bandera=true;
//           String nombreTMP = this.invInfractor.getNombre();
//           String paternoTMP = this.invInfractor.getPaterno();
//           String maternoTMP = this.invInfractor.getMaterno();
//
//            for (int i = 0; i < infractoresTmp.size() ; i++) {
//                   if(this.infractoresTmp.get(i).getNombre().equals(nombreTMP) && this.infractoresTmp.get(i).getPaterno().equals(paternoTMP) && this.infractoresTmp.get(i).getMaterno().equals(maternoTMP)) {
//                        this.getSessionBean1().mostrarMensajeAlert("Error",   nombreTMP + " " + paternoTMP + " " + maternoTMP + " ya existe en la lista");
//                        this.invQuejoso.setNombre("");
//                        this.invQuejoso.setPaterno("");
//                        this.invQuejoso.setMaterno("");
//                        this.invQuejoso.setCargo("");
//                      bandera = false;
//                   }
//                }

        try{
//            if(bandera){
            infractoresTmp.add(new InvInfractores(this.getInvInfractores()));
            if(this.getEditandoO()>=0){
                this.infractoresTmp.remove(this.getEditandoO());
                this.setEditandoO(-1);
            }
                this.invInfractor.setNombre("");
                this.invInfractor.setPaterno("");
                this.invInfractor.setMaterno("");
                this.invInfractor.setCargo("");
//            }
        }catch(Exception e){
        this.getSessionBean1().mostrarMensajeAlert("Error", "Ha ocurrido un porblema para agregar la informació" + e.toString());
        }
        return null;
    }
    //**

    public String button90_action(){
        try{
            infractoresTmp.add(new InvInfractores(this.getInvInfractores()));
            if(this.getEditandoO()>=0){
            this.infractoresTmp.remove(this.getEditandoO());
            this.setEditandoO(-1);
            }
            this.invInfractor.setNombre("");
            this.invInfractor.setPaterno("");
            this.invInfractor.setMaterno("");
            this.invInfractor.setCargo("");
        }catch(Exception e){
        this.getSessionBean1().mostrarMensajeAlert("Error", "Ha ocurrido un porblema para agregar la informació" + e.toString());
        }
        return null;
    }
    //**

    // Quejoso
    public void commandLink1_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.quejososTmp.remove(numero);
    }

    public void commandLink2_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.setInvQuejosos(this.quejososTmp.get(numero));
        this.setEditandoO(numero);
        this.quejososTmp.get(numero).setDeleted(true);
    }
//infractor
public void commandLink3_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.infractoresTmp.remove(numero);
    }

    public void commandLink4_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
         this.infractoresTmp.remove(numero);
        this.setEditandoO(numero);
        this.infractoresTmp.get(numero).setDeleted(true);
    }
//quitar quejoso
    public void commandLink5_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);        //this.getSessionBean1().mostrarMensajeAlert("eliminar","->" + this.turnadosTmp.get(numero).getId());
       boolean re=this.getSessionBean1().deleteInvQuejososId(this.quejososTmp.get(numero).getId());
        this.quejososTmp.remove(numero);
    }
//editar quejoso
    public void commandLink6_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.setInvQuejosos(this.quejososTmp.get(numero));
        this.setEditandoO(numero);
        this.quejososTmp.get(numero).setDeleted(true);
    }

    public void commandLink7_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);        //this.getSessionBean1().mostrarMensajeAlert("eliminar","->" + this.turnadosTmp.get(numero).getId());
       boolean re=this.getSessionBean1().deleteInvInfractoresId(this.infractoresTmp.get(numero).getId());
        this.infractoresTmp.remove(numero);
    }

    public void commandLink8_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.setInvInfractores(this.infractoresTmp.get(numero));
        this.setEditandoO(numero);
        this.infractoresTmp.get(numero).setDeleted(true);
    }


private List<Investigacion> listaInves= new ArrayList<Investigacion>();
private List<InvQuejosos> listaInvQuejosos = new ArrayList<InvQuejosos>();
private List<InvInfractores> listaInvInfractores = new ArrayList<InvInfractores>();

public List<Investigacion> getListaInves() {
        return listaInves;
    }

public void setListaInves(List<Investigacion> listaInves) {
        this.listaInves = listaInves;
    }

public void cargarListaInves(){
        this.setListaInves(this.getSessionBean1().llenaInvesEntrada());
    }

private parametros parametrosFiltro= new parametros();
    public parametros getParametrosFiltro() {
        return parametrosFiltro;
    }
    public void setParametrosFiltro(parametros prametrosFiltro) {
        this.parametrosFiltro = prametrosFiltro;
    }

// no es el boton de busqueda
    public String button1_action() {
//        this.setListaInves(this.getSessionBean1().llenaInves(this.getParametrosFiltro()));
        return null;
    }

    public String button3_action() {

        cargarListaInves();
        //cargarListaInvestigacionFiltro();
        return null;
    }


public List<InvQuejosos> getListaInvQuejosos() {
        return listaInvQuejosos;
    }
    public void setListaInvQuejosos(List<InvQuejosos> listaInvQuejosos) {
        this.listaInvQuejosos = listaInvQuejosos;
    }

public void cargarListaInvQuejosos(){
       this.setListaInvQuejosos(this.getSessionBean1().llenarInvQuejosos());
  }

public List<InvInfractores> getListaInvInfractores() {
       return listaInvInfractores;
   }
    public void setListaInvInfractores(List<InvInfractores> listaInvInfractores) {
       this.listaInvInfractores = listaInvInfractores;
    }

public void cargarListaInvInfractores(){
        this.setListaInvInfractores(this.getSessionBean1().llenarInvInfractores());
    }

public String button9_action() {
        if(this.getUnaInves().getOficio().equalsIgnoreCase("")){
            this.getSessionBean1().mostrarMensajeAlert("Atención","No. Investigación Necesario");
         return null;
        }
//        if(this.getUnaInves().getOrigen().equalsIgnoreCase("")){
//            this.getSessionBean1().mostrarMensajeAlert("Atención","Origen Necesario");
//         return null;
//        }
        try{
            int response=getSessionBean1().addInvEdit(this.getUnaInves(), this.getVisitadorInt(),this.getLugarInt());
            if(response == -1){
                this.getSessionBean1().mostrarMensajeAlert("Atención", "Complete la información");
            }else{
                this.getUnaInves().setId(response);
                for (int i = 0; i < quejososTmp.size() ; i++) {
                    this.setInvQuejosos(this.quejososTmp.get(i));
                    this.getInvQuejosos().setInvestigacion(this.getUnaInves());
                    InvQuejosos invQ = this.getSessionBean1().addInvQuejososEdit(this.getInvQuejosos());
                }
                 for (int j = 0; j < infractoresTmp.size() ; j++) {
                    this.setInvInfractores(this.infractoresTmp.get(j));
                    this.getInvInfractores().setInvestigacion(this.getUnaInves());
                    InvInfractores invI = this.getSessionBean1().addInvInfractoresEdit(this.getInvInfractores());
                }

                this.getSessionBean1().mostrarMensajeAlert("Exito","Registro almacenado con exito");
//                quejososTmp.clear();
//                infractoresTmp.clear();
//                this.getInvQuejosos().setId(0);
//                this.getInvQuejosos().setInvestigacion(null);
//                this.getInvQuejosos().setNombre("");
//                this.getInvQuejosos().setPaterno("");
//                this.getInvQuejosos().setMaterno("");
//                this.getInvQuejosos().setCargo("");
//                this.getInvInfractores().setId(0);
//                this.getInvInfractores().setInvestigacion(null);
//                this.getInvInfractores().setNombre("");
//                this.getInvInfractores().setPaterno("");
//                this.getInvInfractores().setMaterno("");
//                this.getInvInfractores().setCargo("");
//                this.getUnaInves().setOficio("");
//                this.getUnaInves().setOrigen("");
//                this.getUnaInves().setObservaciones("");
//                this.getUnaInves().setIregularidadObs("");
//                this.getUnaInves().setFechaRec(null);
//                this.setVentanaEdit(false);
//                cargarListaInvQuejosos();
//                cargarListaInvInfractores();
//                cargarListaInves();
            }
            cargarListaInves();
            //cargarListaInvestigacionFiltro();
             this.setVentanaEdit(false);
        }catch(Exception e ){
            this.getSessionBean1().mostrarMensajeError("Error","Ha ocurrido un problema al intentar guardar la información");
        }
             JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "document.getElementById('form2:button10').focus();");
        return null;
    }

//    private List<Investigacion> listaPrinInvestigacion = new ArrayList<Investigacion>();
    private List<listaInvestigacion> listaPrinInvestigacionFiltro= new ArrayList<listaInvestigacion>();

//    public List<Investigacion> getListaPrinInvestigacion() {
//        return listaPrinInvestigacion;
//    }
//    public void setListaPrinInvestigacion(List<Investigacion> listaPrinInvestigacion) {
//        this.listaPrinInvestigacion = listaPrinInvestigacion;
//    }
//
//    private void cargarListaInvestigacion() {
//        this.setListaPrinInvestigacion(this.getSessionBean1().llenarListaInvestigacion());
//    }

    public String paramSeacrh;
    public String getParamSeacrh() {
        return paramSeacrh;
    }
    public void setParamSeacrh(String paramSeacrh) {
        this.paramSeacrh = paramSeacrh;
    }
    private void cargarListaInvestigacionFiltro() {
        int a=2;
        this.setListaPrinInvestigacionFiltro(this.getSessionBean1().llenarListaInvestigacionFiltro(this.getParamSeacrh() , this.getSelectOneRadio2Bean().getSelectedObject().toString()));
    }

    public List<listaInvestigacion> getListaPrinInvestigacionFiltro() {
        return listaPrinInvestigacionFiltro;
    }

    public void setListaPrinInvestigacionFiltro(List<listaInvestigacion> listaPrinInvestigacionFiltro) {
        this.listaPrinInvestigacionFiltro = listaPrinInvestigacionFiltro;

}

    public String button2_action() {
        //return null means stay on the same page
        try{

            if(this.getSessionBean1().llenarListaInvestigacionFiltro(this.getParamSeacrh(), this.getSelectOneRadio2Bean().getSelectedObject().toString()).isEmpty())
            {
                this.getSessionBean1().mostrarMensajeAlert("Error","No existe elemento buscado.");
            }else{
            this.setListaPrinInvestigacionFiltro(this.getSessionBean1().llenarListaInvestigacionFiltro(this.getParamSeacrh(), this.getSelectOneRadio2Bean().getSelectedObject().toString()));
           // this.setListaInves(this.getSessionBean1().llenaInvesEntrada());
            }
        }
        catch(NullPointerException npe){
        this.getSessionBean1().mostrarMensajeAlert("Error","Seleccionar tipo de búsqueda.");
        }
           
        return null;
    }

     public String inputText2_action() {
        button2_action();
        return null;
    }


  private DefaultSelectedData selectOneRadio2Bean = new DefaultSelectedData();

    public DefaultSelectedData getSelectOneRadio2Bean() {
        return selectOneRadio2Bean;
    }

    public void setSelectOneRadio2Bean(DefaultSelectedData dsd) {
        this.selectOneRadio2Bean = dsd;
    }

    public void detalleInves(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        this.getSessionBean1().sesion.clear();
        this.getSessionBean1().sesion.load(ofiDetail, this.listaPrinInvestigacionFiltro.get(numero).getId());
        this.quejososTmp.clear();
         this.infractoresTmp.clear();

        Set invq;
            invq= ofiDetail.getInvQuejososes();
            for (Iterator iterator =  invq.iterator(); iterator.hasNext();){
                InvQuejosos quej = (InvQuejosos) iterator.next();
                if(!quej.getDeleted()){
                    this.quejososTmp.add(quej);
                }
            }

       Set invi;
            invi= ofiDetail.getInvInfractoreses();
            for (Iterator iterator =  invi.iterator(); iterator.hasNext();){
                InvInfractores inf = (InvInfractores) iterator.next();
                if(!inf.getDeleted()){
                    this.infractoresTmp.add(inf);
                }
            }
        //this.getSessionBean1().mostrarMensajeAlert("Numero"," :"+ this.listaTurnados.get(numero).getOficios().getOficio());
//     this.setQuejososTmp(this.listaInvQuejosos.get(numero).getInvestigacion().getInvQuejosos());
//         this.setInfractoresTmp(this.listaInvInfractores.get(numero).getInvestigacion().getInvInfractores());
        //this.setOfiDetail(this.listaInvQuejosos.get(numero).getInvestigacion());
//        this.setRemitetnteDetail(this.listaTurnados.get(numero).getOficios().getRem1());
//        this.setCargoDetail(this.listaTurnados.get(numero).getOficios().getCargo1());
        this.setVentanaDetail(true);

    }

    public String button_1_action() {
        //return null means stay on the same page
        this.setVentanaDetail(false);
        return null;
    }

private Investigacion ofiDetail= new Investigacion();
    public Investigacion getOfiDetail() {
        return ofiDetail;
    }
    public void setOfiDetail(Investigacion ofiDetail) {
        this.ofiDetail = ofiDetail;
    }

    public String imprimir(){
        String url="";
        url+="reporteInves?idInves="+this.getOfiDetail().getId();
        JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "openWindow('" + url + "','Reporte 1', '_');");
        return null;
    }


    public void commandLink3a_processAction(ActionEvent ae) {
        FacesContext contexto = FacesContext .getCurrentInstance();
        int numero=RegresaSeleccionadoTablaPrincipal(contexto,  ae);
        if(this.listaPrinInvestigacionFiltro.get(numero).getId_oficio()!=null){
            String url="";
            url+="correspondencia.jsp?idOficio="+this.listaPrinInvestigacionFiltro.get(numero).getId_oficio();
            JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "window.document.location.href='"+url+"';");
        }else{
            this.getSessionBean1().mostrarMensajeAlert("Error","No existe");
        }
        

    }

    public void abrirProced(){
        
        String url="";
        //if(this.getOfiDetail().geti)
        url+="procedimiento.jsp?idInvestigacion="+this.getOfiDetail().getId()+"&in="+this.getOfiDetail().getOficio();
        JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "window.document.location.href='"+url+"';");
    }

    public void salir() {

        this.getSessionBean1().cerrarSesion();
        FacesContext context = FacesContext.getCurrentInstance();
        JavascriptContext.addJavascriptCall(context, "setTimeout(\"window.location.href='Page1.jsp'\",1000);");
        //return null;
    }

}

